<?php
namespace app\api\controller;

use \think\Request;
use Firebase\JWT\JWT;

class Index extends Base
{
    public function index()
    {
        $name = input("get.name");
        $pwd = input("get.pwd");

        if( $name == 'wenlong' && $pwd == '123456'){
            session('jwt',$this->jwt());
            echo $this->jwt();
        }else{
            echo "登陆失败";
        }
    }

    public function test(){
        $requestToken = Request::instance()->header();
        //echo $requestToken['a'];
        $token = session('jwt');
        if( $requestToken['a'] == $token ){
            $a = JWT::decode($requestToken['a'], 'example_key', array('HS256'));
            dump($a);
        }else{
            echo "认证失败";
        }
    }

    public function jwt(){
        $key = "example_key";
        $token   = [
            #非必须。issuer 请求实体，可以是发起请求的用户的信息，也可是jwt的签发者。
            //"iss"       => "http://example.org",
            #非必须。issued at。 token创建时间，unix时间戳格式
            "iat"       => $_SERVER['REQUEST_TIME'],
            #非必须。expire 指定token的生命周期。unix时间戳格式
            "exp"       => $_SERVER['REQUEST_TIME'] + 100,
            #非必须。接收该JWT的一方。
            //"aud"       => "http://example.com",
            #非必须。该JWT所面向的用户
            "sub"       => "jrocket@example.com",
            # 非必须。not before。如果当前时间在nbf里的时间之前，则Token不被接受；一般都会留一些余地，比如几分钟。
            "nbf"       => 1357000000,
            # 非必须。JWT ID。针对当前token的唯一标识
            "jti"       => '222we',
            # 自定义字段
            "GivenName" => "Jonny",
            # 自定义字段
            "name"   => "Rocket",
            # 自定义字段
            "Email"     => "jrocket@example.com",

        ];

        $jwt = JWT::encode($token, $key);
        //$decoded = JWT::decode($jwt, $key, array('HS256'));

        return $jwt;
    }


}
